package com.shujia.thread_;

import org.junit.Test;

public class FirstThread extends Thread {

    //    public static void main(String[] args) {
    @Test
    public void test1() {
        // 获取当前线程
        Thread thread = Thread.currentThread();
        // 获取线程的名称
        String name = thread.getName();
        System.out.println(name);

        for (int i = 1; i <= 100; i++) {
            if (i == 20) {
                // 创建线程
                Thread t1 = new FirstThread();

                // 设置线程名称
                t1.setName("线程1");

                // 启动线程, 注意不是run方法
                // 获取到cup的使用权, 中间需要一定的时间, 虽然时间很短
                // for循环执行的时间小于了上面的时间
                t1.start();
            }
            // 让线程睡眠一会, 当前线程在睡眠的时候, cpu会找其他的线程并执行
            try {
                Thread.sleep(30);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }

            System.out.println(name + ":" + i);
        }

        // 单元测试线程可以会启动不起来, 编写多线程代码的时候, 都写在main方法里
        // System.exit(0);
    }

    @Override
    public void run() {
        for (char c = 'a'; c <= 'z'; c++) {
            // 在 Thread子类里面获取线程名, 直接调用getName
            String name = getName();
            try {
                Thread.sleep(30);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            System.out.println(name + ":" + c);
        }
    }
}
